//===============================================================================
// Microsoft patterns & practices Enterprise Library Contribution
// Resource Application Block
//===============================================================================

using System;
using System.ComponentModel;
using System.Configuration;
using System.Diagnostics;
using System.Drawing.Design;
using Microsoft.Practices.EnterpriseLibrary.Configuration.Design;
using Microsoft.Practices.EnterpriseLibrary.Configuration.Design.Validation;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;

namespace EntLibContrib.Resource.Configuration.Design
{
	/// <summary>
	/// Represents a resource provider. The class is abstract.
	/// </summary>
	[Image(typeof(ResourceProviderNode))]
	[SelectedImage(typeof(ResourceProviderNode))]
	public abstract class ResourceProviderNode : ConfigurationNode
	{
		#region Properties
		/// <summary>
		/// Gets a <see cref="ResourceProviderData"/> configuration object from the nodes data.
		/// </summary>
		/// <value>
		/// A <see cref="ResourceProviderData"/> configuration object from the nodes data.
		/// </value>
		[Browsable(false)]
		public abstract ResourceProviderData ResourceProviderData { get; }

		/// <summary>
		/// Gets the name of the node.
		/// </summary>
		/// <value>
		/// The name of the node.
		/// </value>
		[UniqueName(typeof(ResourceProviderNode), typeof(ResourceManagerSettingsNode))]
		public override string Name
		{
			get { return base.Name; }
		}
		#endregion

		#region Construction
		/// <summary>
		/// Initialize a new instance of the <see cref="ResourceProviderNode"/> class.
		/// </summary>        
		protected ResourceProviderNode ()
		{
		}
		#endregion
	}
}
